// io引入当前作用域
// std 标准库
use std::io;
use rand:: Rng;
use std::cmp::Ordering;


fn main() {

    println!("guess the number");

    println!("please input your guess");

    let number = rand::thread_rng().gen_range(1..=100);

    // loop是一个无限循环
    loop {

        // let mut 使变量可以提改变
        // let : 在rust中 let默认定义不可变量   :: 语法表明 new 是 String 类型的一个 关联函数
        let mut guess = String::new();
        // & 表示这个参数是一个 引用
        io::stdin().read_line(&mut guess).expect("failed to read line");

        // 使用match 来处理分支
        let guess:u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => continue

        };
        println!("your guess :{}",guess);

        match guess.cmp(&number) {
            Ordering::Less => println!("Too small"),
            Ordering::Greater => println!("Too big"),
            Ordering::Equal => {
                println!("Win!");
                break;
            }
        }
    }



}
